package model.portfel;

import java.math.BigInteger;

import model.annotation.DomainEntity;
import system.Data;
import system.Kwota;

@DomainEntity
public class Notowanie {

	/** 
	 * @uml.property name="data"
	 */
	private Data data;

	/** 
	 * @uml.property name="cenaMinimalna"
	 */
	private Kwota cenaMinimalna;

	/** 
	 * @uml.property name="cenaMaksymalna"
	 */
	private Kwota cenaMaksymalna;

	/** 
	 * @uml.property name="cenaOtwarcie"
	 */
	private Kwota cenaOtwarcie;

	/** 
	 * @uml.property name="cenaZamkniecie"
	 */
	private Kwota cenaZamkniecie;

	/** 
	 * @uml.property name="wolumen"
	 */
	private BigInteger wolumen;

	public Notowanie(
			Data data, 
			Kwota cenaOtwarcie,
			Kwota cenaMaksymalna, 
			Kwota cenaMinimalna,
			Kwota cenaZamkniecie, 
			BigInteger wolumen) {
		super();
		this.data = data;
		this.cenaMinimalna = cenaMinimalna;
		this.cenaMaksymalna = cenaMaksymalna;
		this.cenaOtwarcie = cenaOtwarcie;
		this.cenaZamkniecie = cenaZamkniecie;
		this.wolumen = wolumen;
	}

	/** 
	 * Getter of the property <tt>cenaMaksymalna</tt>
	 * @return  Returns the cenaMaksymalna.
	 * @uml.property  name="cenaMaksymalna"
	 */
	public Kwota getCenaMaksymalna() {
		return cenaMaksymalna;
	}

	/**
	 * Getter of the property <tt>cenaMinimalna</tt>
	 * @return  Returns the cenaMinimalna.
	 * @uml.property  name="cenaMinimalna"
	 */
	public Kwota getCenaMinimalna() {
		return cenaMinimalna;
	}

	/**
	 * Setter of the property <tt>cenaMinimalna</tt>
	 * @param cenaMinimalna  The cenaMinimalna to set.
	 * @uml.property  name="cenaMinimalna"
	 */
	public void setCenaMinimalna(Kwota cenaMinimalna) {
		this.cenaMinimalna = cenaMinimalna;
	}

	/** 
	 * Getter of the property <tt>cenaOtwarcie</tt>
	 * @return  Returns the cenaOtwarcie.
	 * @uml.property  name="cenaOtwarcie"
	 */
	public Kwota getCenaOtwarcie() {
		return cenaOtwarcie;
	}

	/** 
	 * Getter of the property <tt>cenaZamkniecie</tt>
	 * @return  Returns the cenaZamkniecie.
	 * @uml.property  name="cenaZamkniecie"
	 */
	public Kwota getCenaZamkniecie() {
		return cenaZamkniecie;
	}

	/**
	 * Getter of the property <tt>notowanieData</tt>
	 * @return  Returns the notowanieData.
	 * @uml.property  name="data"
	 */
	public Data getData() {
		return data;
	}

	/**
	 * Setter of the property <tt>notowanieData</tt>
	 * @param notowanieData  The notowanieData to set.
	 * @uml.property  name="notowanieData"
	 */
	public void setData(Data data) {
		this.data = data;
	}

	/** 
	 * Getter of the property <tt>wolumen</tt>
	 * @return  Returns the wolumen.
	 * @uml.property  name="wolumen"
	 */
	public BigInteger getWolumen() {
		return wolumen;
	}

	/** 
	 * Setter of the property <tt>cenaOtwarcie</tt>
	 * @param cenaOtwarcie  The cenaOtwarcie to set.
	 * @uml.property  name="cenaOtwarcie"
	 */
	public void setCenaOtwarcie(Kwota cenaOtwarcie) {
		this.cenaOtwarcie = cenaOtwarcie;
	}

	/** 
	 * Setter of the property <tt>cenaMaksymalna</tt>
	 * @param cenaMaksymalna  The cenaMaksymalna to set.
	 * @uml.property  name="cenaMaksymalna"
	 */
	public void setCenaMaksymalna(Kwota cenaMaksymalna) {
		this.cenaMaksymalna = cenaMaksymalna;
	}

	/** 
	 * Setter of the property <tt>cenaZamkniecie</tt>
	 * @param cenaZamkniecie  The cenaZamkniecie to set.
	 * @uml.property  name="cenaZamkniecie"
	 */
	public void setCenaZamkniecie(Kwota cenaZamkniecie) {
		this.cenaZamkniecie = cenaZamkniecie;
	}

	/** 
	 * Setter of the property <tt>wolumen</tt>
	 * @param wolumen  The wolumen to set.
	 * @uml.property  name="wolumen"
	 */
	public void setWolumen(BigInteger wolumen) {
		this.wolumen = wolumen;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((cenaMaksymalna == null) ? 0 : cenaMaksymalna.hashCode());
		result = prime * result
				+ ((cenaMinimalna == null) ? 0 : cenaMinimalna.hashCode());
		result = prime * result
				+ ((cenaOtwarcie == null) ? 0 : cenaOtwarcie.hashCode());
		result = prime * result
				+ ((cenaZamkniecie == null) ? 0 : cenaZamkniecie.hashCode());
		result = prime * result
				+ ((data == null) ? 0 : data.hashCode());
		result = prime * result + ((wolumen == null) ? 0 : wolumen.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Notowanie other = (Notowanie) obj;
		if (cenaMaksymalna == null) {
			if (other.cenaMaksymalna != null)
				return false;
		} else if (!cenaMaksymalna.equals(other.cenaMaksymalna))
			return false;
		if (cenaMinimalna == null) {
			if (other.cenaMinimalna != null)
				return false;
		} else if (!cenaMinimalna.equals(other.cenaMinimalna))
			return false;
		if (cenaOtwarcie == null) {
			if (other.cenaOtwarcie != null)
				return false;
		} else if (!cenaOtwarcie.equals(other.cenaOtwarcie))
			return false;
		if (cenaZamkniecie == null) {
			if (other.cenaZamkniecie != null)
				return false;
		} else if (!cenaZamkniecie.equals(other.cenaZamkniecie))
			return false;
		if (data == null) {
			if (other.data != null)
				return false;
		} else if (!data.equals(other.data))
			return false;
		if (wolumen == null) {
			if (other.wolumen != null)
				return false;
		} else if (!wolumen.equals(other.wolumen))
			return false;
		return true;
	}

}